Method for Sharing Documents Between Groups Over a Distributed Network

ABSTRACT

A technique is disclosed for sending and receiving documents between groups over a distributed computer network, which can include the Internet. The method includes receiving a message which includes a document from a member of a first group, the first message also including an indication of whether the document is send-able to other groups; sending a list of groups to the member of the first group to which the first member belongs if the indication indicates that the document is send-able to other groups; receiving a message which indicates that the document is to be sent to a second group; associating the document with the second group in a database; and storing the document in a database. There is only one version of the document stored in the database at any one time. Users of the method can create a document that is linkable to other groups so that these other groups can see the document without losing a connection to the document. The original user can edit or delete the document and have the changes to the document be reflected in all copies of the document throughout all the groups. The user can allow or prohibit other users to continue to send the document to other groups.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. provisional patentapplication No. 60/777,608 filed Feb. 28, 2006, the disclosure of whichis incorporated herein by reference in its entirety.

FIELD OF THE INVENTION

The present invention relates generally to distributed communications,and more particularly, to a method for allowing groups of users tocommunicate with each other across a distributed network.

BACKGROUND OF THE INVENTION

Since the advent of the Internet, the web has evolved from primarily anelectronic publishing system in which companies publish information toweb sites for passive consumption by users, to one in which usersactively connect to and communicate with each other. Most user-to-usercommunication via the Internet has been dominated by email, instantmessaging, bulletin boards and blogs. Email has become a more formalform of communication and is better suited for one-on-one communicationor for information distribution to a group. Email is poorly suited forgroup discussions. Emails can also be sent in a one-to-many fashion.With bulletin boards, newsgroups, and blogs, messages are posted to acommon location for anyone from a selected group to read, and then thereaders can post the message back. Bulletin boards better support groupsbut are designed to be organized by topics, not groups of people.Instant messaging is like email but messages are sent in real time.Blogs are designed for a one-to-many publishing.

All of these traditional tools are ill-suited for group communicationson the Internet. People have family, school friends, clubs, orneighborhoods that they belong to. They need tools that enable them tocommunicate, coordinate, and share information and media amongst peoplein a group. Moreover, people would greatly benefit if they could accessthe knowledge of their extended groups, i.e. the groups that the membersof their groups belong to and so on. None of the above methods ofcommunicating over the Internet support distributed networkcommunication among extended groups of people.

Non-traditional third-party tools on the market currently do not allowpeople to both create groups and intelligently move information acrossgroups without having to repost them and losing connection with theoriginal message. Reposting a message to multiple groups can provehighly inefficient. Other problems associated with these third-partytools include the following:

-   -   The copies of the messages are not connected.    -   The author has no control or record of the copies of a message.    -   The author does not know how many groups to which the message        has been reposted    -   There is a lost opportunity to track and analyze the social        networking path through which the message is traveling. This        analysis is both beneficial to the users as well as providing        valuable word of mouth analysis that can be of great commercial        value.

Accordingly, what would be desirable, but has not yet been provided, isa distributed network medium to allow friends, family, clubs, etc., tocommunicate specifically as a group to other groups in a multi-wayfashion.

SUMMARY OF THE INVENTION

The above-described problems are addressed and a technical solution isachieved in the art by providing a method for sending and receivingdocuments between groups over a distributed computer network. In someembodiments, the method includes receiving a first message from a memberof a first group which includes a document, the first message alsoincluding an indication of whether the document is send-able to othergroups; sending a list of groups to the member of the first group towhich the first member belongs if the indication indicates that thedocument is send-able to other groups; receiving a message whichindicates that the document is to be sent to a second group; andassociating the document with the second group. The method also includesstoring an association of the document with the second group in adatabase; storing an association of the second group with the documentin the database; and storing the document in a database. There is onlyone version of the document stored in the database at any one time.

The distributed computer network can be the Internet. In someembodiments, the method is stored on a web-server which is associatedwith a database server, a notification server, an IP router, and afirewall. The web-server communicates with users over the Internet via aseries of web-pages displayed at a plurality of web-enabled terminals.The kinds of documents that can be shared between groups include text,such as email-like messages, files, formatted attachments, calendarevents, trading message items, digital photograph, digital video,digital audio, etc.

Users of the method and system can create a document that is linkable toother groups so that these other groups can see the document withoutlosing a connection to the document; edit the original document and havethe changes to the document be reflected in all copies of the documentthroughout all the groups; delete the original document and have allcopies of the document be deleted; and allow or prohibit other users tocontinue to send the document to other groups The author of a documentcan always send the document to other groups to which they belong. Theauthor can determine whether the document can be sent by other users ofa group for which the content was created.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be more readily understood from the detaileddescription of exemplary embodiments presented below considered inconjunction with the attached drawings, of which:

FIG. 1 is a block diagram showing the entities involved in a preferredembodiment of the present invention;

FIG. 2 is a block diagram showing several “Rippling” scenarios;

FIG. 3 is a network architecture, constructed in accordance with apreferred embodiment of the present invention;

FIG. 4 is a screen shot for originating a message to be rippled;

FIG. 5 is a screen shot for a user that is receiving a message that hasbeen rippled;

FIG. 6 is a screen shot of a second screen presented to the receiver ofa rippled message in which the receiver can also ripple the receivedmessage; and

FIG. 7 is a screen shot for deleting a message;

It is to be understood that the attached drawings are for purposes ofillustrating the concepts of the invention and may not be to scale.

DETAILED DESCRIPTION OF THE INVENTION

Referring now to FIG. 1, there is shown the entities involved in apreferred embodiment of the present invention, referred to herein as a“Ripple.” A Ripple involves users 10, each of whom is associated with auser name, one or more group names, and an email address. The users 10belong to one or more groups 12. Typically the users 10 belonging to agroup 12 which has some real-world relationship that establishes a levelof trust between members of the group 12 (e.g., a family group, friendsor a club). As used herein, a “group” is a collection of users 10identified by a common group ID in a database. A group is a privategroup when users of the group provide the group ID to subsequent groupmembers by invitation to the group. A group is a public group if itsgroup ID is published in a publicly viewable list, thereby allowing anyuser to join the group. In effect, the user invites herself to thepublic group A document 14 can be text, such as an email-like message, afile, or formatted attachment. In addition to basic documents, such asemail-like messages, in some embodiments, rippling can also be appliedto other types of documents 14 such as Calendar Events, Trading Messageitems, digital photograph, digital video, digital audio, etc.

Other users 10 outside the group 12 initially do not have access to thedocuments 14. The embodiments of the invention allow a user 10 to markone or more documents 14 such that other users 10 in the same group 12may or may not share the one or more documents 14 with members of othergroups 12 to which the users 10 belong. Members of groups 12 to whichone or more messages 14 have been sent can in turn propagate these samedocuments 14 to groups 12 to which these users 10 belong, and so on.Hence, the propagation of documents 14 across groups 12 is referred toherein as a “ripple.” Similarly, the act of propagating documents 14 toother groups 12 is referred to herein as “rippling,” and a document 14may or may not be “ripple-able” (i.e. send-able). The groups 12 aresimilar to bulletin boards, except that messages can be shared acrossthe groups 12.

If a document 14 is not marked as “ripple-able,” then only theoriginating user 10 may share the document 14 with his or her own group12. Because individual users 10 make a “ripple-able/not ripple-able”decision on a group-by-group basis, the users 10 rely not on rightsassigned by a group moderator (not shown) of a computer system (notshown), but on real-world relationships between the members of the group12. Because of the approach the embodiments of the present inventiontake, the data collected is a representation of how the documentstravels across the groups 12 that direct the paths of the documents 14and the sequence of their traversals.

With Ripple, the users 10 can create documents 14 to:

-   -   link a document 14 to other groups 12 so that these other groups        12 can see the document 14 without losing a connection to the        document 14;    -   edit the original document 14 and have the changes to the        document 14 be reflected in all copies of the document 14        throughout all the groups 12;    -   delete the original document 14 and have all copies of the        document 14 be deleted;    -   allow or prohibit other users 10 to continue to ripple the        document 14;    -   allow the original user 10 to know exactly how many groups 12        and users 10 have access to a document 14;    -   generate useful analytical data from rippling that can have        great commercial value; and;    -   allow the original user 10 to select useful documents that the        user 10 finds in her groups 12 and ripple them to a master group        where all useful documents are kept.        Rippling rules can include the following:    -   1. The author (user 10) of a document 14 can always ripple a        document 14.    -   2. The author 10 can determine whether the document 14 can be        rippled by other users of a group for which the content was        created.

These rules are illustrated in FIG. 2. There are three groups 12: GroupA, Group B, and Group C. User 1 belongs to Group A; User 2 belongs toGroup B; and User 3 belongs to Group C. In a scenario 16, User 1 createsa document (post) 18. A variable called “ripple-able”, which determineswhether the post 18 can be rippled to other groups, is set to Y (foryes). The post 18 is sent to Group B, where User 2 reads the content ofthe post 18 once User 2 logs into Group B or refreshes her web page.Since the post 18 is ripple-able, User 2 can ripple the post 18 to GroupC, where User 3 reads the post 18. In the scenario 20, User 1 creates apost 22, but sets the Ripple-able variable to N (for No). The post 22 issent to Group B, where User 2 reads the post 22. Since the post 22 isnot ripple-able, only members of Group B can read the post 22. Thescenario 24 is similar to the scenario 16, except that User 1 is also amember of Group B, and User 2 is also a member of Group C. The scenario26 is similar to the scenario 18, except User 2 belongs to Group 3 andUser 3 belongs to Group 2. User 1 ripples a ripple-able post 28 andsends the post 28 to Group 3, wherein User 3 reads the post 28, and thenripples the post 28 to Group B, wherein User 3 reads the post 28. Bydefault, if the maximum number of degrees of separation is not set, thena post (document) can be infinitely ripple-able. This is the case forthe scenarios 18, 20, 24, and 28. Note that a change or deletion made toany of the posts 18, 22, and 28 by User 1 are reflected in the postsread by User 1 and User 3 once User 1 or User 3 refreshes their web pageor logs into a group. Note also, for example, in scenario 18, that ifUser 3 creates a response to the post 18, the response is “rippled” backthrough Group B and then Group A so that User 1 may review the response.

When a new group is created, the creating user is the first member(user) of the group and may invite any number of other users to jointhat group by sending “invitations” to other users. These other users,once they become members of a group can in turn invite additionalmembers. The implementation of the creation of a group and how a memberof a group invites others to join will be discussed hereinbelow.

Referring now to FIG. 3, there is shown a distributed network hardwarearchitecture of the preferred embodiment of the present invention,generally indicated at 30. A plurality of users communicate via acorresponding plurality of terminals 32. The terminals 32 can bepersonal computers, work stations, PDA, smart phones, etc. The terminals32 are capable of reading a program from memory which presents aplurality of user screens within a web browser, such as MicrosoftInternet Explorer®, and which are described below in connection withFIGS. 4-7. The user screens include areas for reading documents ofmembers of a group to which a user belongs, areas for composingdocuments (post, message, email) that are to be rippled, and buttons andinput boxes for collecting user information, such as selecting a groupto which to ripple a document. Messages containing rippled documents areassociated with source and destination addresses and sent in TCP/IPpackets via the Internet 34 through a firewall 36 and an IP router 38 toone or more web servers 40. A message is any information shared betweenthe terminals 32 and the web servers 40, or between servers. A messagecan comprise a document. In other embodiments, the terminals cancommunicate with any type of server over any distributed network,including private intranets, local area networks (LANs), wide areanetworks (WANs), etc. The web-servers 40 have one or more processors,volatile RAM memory, and non volatile memory, such as hard or opticaldisks and flash memory (all not shown). The one or more processors ofthe web-servers 40 are capable of reading and executing from memory aserver ripple program to be described hereinbelow. The server rippleprogram is capable of functioning as a main web-site for the rippleservice. The web-servers 40 send and retrieve data concerning users,groups, and documents to/from a database server 39 and to/from the webbrowser programs resident on the plurality of terminals 32. The databaseserver 39 also communicate with a notification server 42. On a periodicbasis (including every few minutes, once a day, once a week) thenotification server 42 queries the database server 39 to generate avariety of email messages to send to users who request such updates inorder to report new activity or changes on the web site associated withthe web-servers 40.

The data model stored in the database server 40 and involved in“rippling” are listed below in Tables 1-5. Elements of Tables 1-5 willbe referred to in subsequent discussions of the features of Ripple.TABLE 1 User Member Column Name DataType Memberid int Username NvarcharLastname Nvarchar Firstname Nvarchar address1 Nvarchar address2 NvarcharCity Nvarchar Regioncode Nchar Countrycode Nchar Inactive Bit CreationdtDatetime Updatedt Datetime emailaddress Nvarchar Messagealcode NvarcharReferralcode Nvarchar

TABLE 2 Group Column Name DataType groupid int groupname nvarchargrouptypeid int groupdescription nvarchar creationdt datetime

TABLE 3 Group Member Column Name DataType groupmemberid Int roletypeidNchar emaildigesttype Int lastviewdate Datetime creationdt Datetime*groupid Int *memberid Int

TABLE 4 Message Document Column Name DataType messageid Int memberid Inttitle Nvarchar messagebody Ntext imagepath Nvarchar thumbpath Nvarcharcreationdt Datetime updatedt Datetime viewcount Int parentid Intlocation Nvarchar contact Nvarchar isripple-able Bit degreerule Int

TABLE 5 Group Message Column Name DataType groupmessageid int memberidint reftypeid nchar srcgroupid int creationdt datetime *groupid int*messageid int

An embodiment of the Ripple web-site associated with the web-servers 40,an example of which can be found at http://www.momjunction.com, containsboth private (i.e., unlisted) groups and public (i.e., listed) group. Auser becomes a member of a group in one of three ways:

-   -   1) Visiting and registering at the web-site associated with the        web-servers 40;    -   2) Creating another group once a member of a group; and    -   3) Being invited by an existing member of a group.

When visiting the web-site associated with the web-servers 40, theprospective member indicates that she wants to join a web-siteassociated with the web-servers 40 and is presented with a typical newuser registration form as is known in the art. The prospective member isprompted for a user name, password, email address, etc. After filing outthe registration form, the new user is given a home group. For example,if the user name were Malcolm, the group created would be called“MalcolmsFriends.” Initially, the user is only member of the“MalcolmsFriends” group and is, of course, invited to his own group. Thenew group is assigned a Web Address such ashttp://www.momjunction.com/group/MalcolmsFriends.

For creating another group once a member of the a first group, therewill appear on several web pages a button for creating a group. Afterclicking on the “create a group” button, the user is taken to anotherweb page with a number of fields. The user is asked for the name of thegroup to be created. The user then fills in a description of the groupfor people who might join it, such as what is the purpose of the group.Then the user is presented with another web page for inviting otherusers to the group. The page has an input box for entering emailaddresses of people the user would like to invite. Then, the user ispresented with a sample message that the invitees will be presentedwith, such as “Malcolm has created a group. He wants to invite you.Here's the information you need to join the group.” The user then clicksthe “send invitation button.” At this point the notification server 42,within a predetermined amount of time, say 10 minutes, queries thedatabase for new group invitations, gathers the information, and sendsemail messages to each email address in the previously entered list. Thesame invitation procedure is followed for new users who visit theweb-site associated with the web-servers 40 for the first time.

When a new user is invited to a group or a current user creates a newgroup, he receives an email with the group web address and a web linkembedded in the email message. Anyone she wishes to invite can receive aforwarded copy of the email and use the link to join the group. When thenew user clicks the link, she is presented with a user registration pageand after registering, she is added to the GroupMember list for thegroup and will see the group listed on his own group list in the homepage of the web-site.

In addition, a newcomer or current user can subscribe to public groupsin a fashion similar to subscribing to Netnews groups or public bulletinboards, as is known in the art.

FIG. 4 depicts an embodiment of a user screen 44 for a user that isoriginating a message (document). The screen 44 includes a title entrybox 46, an entry box 48 for the message to be sent in Step 1. Manyformatting operations 50 can be performed in a fashion similar toMicrosoft Word®, such as screen fonts. In the pull down menu 52, theuser can make an assignment to a category which would group messagestogether for an alternative view of related messages. In the portion ofthe screen 44 labeled “Step 2”, two radio buttons 53 are presented tothe user for allowing the user to decide whether the message justcomposed can be rippled by others to members of their respective groups,which may not be one of the groups the current user belongs to. In theportion of the screen labeled “Step 3”, the user selects which groups 54to which this message is to be rippled (sent). A separate box 56 allowsother users at the entered email addresses to receive this message.Another check box 58 invites the users entered in box 56 to becomemembers of the current group to which the user sending the messagebelongs. Finally, the user sends the message by clicking the “save”button 59.

The following is the algorithm that can be executed by the web-servers40 for ‘Assigning Ripple Properties’ to a new message that a usercreates for displaying to his current group or for rippling to othergroups to which he belongs:

-   -   1. Create a new object of type Message as msg.    -   2. Assign current authenticated user to Member property of msg.    -   3. Assign properties such as message body from Web Page to msg.    -   4. Assign IsRipple-able property to msg.    -   5. Create association object of type GroupMesssage as groupmsg.    -   6. Determine current Group location from Web Page.    -   7. Create object of type Group as grp.    -   8. Load grp with values from group table in database by calling        Group.FindByGroupName( ) method using current group name from        Web Page.    -   9. Set Group property of groupmsg to grp.    -   10. Set SrcGroupId property of groupmsg to grp.GroupId.    -   11. Set Message property of groupmsg to msg.    -   12. Set RefTypeId to CREATED in groupmsg.    -   13. Save the msg object to database by calling Session.Save(msg)        which also saves all groupmsg association objects.

In summary, to create a new message, a blank message object is created.The current user who created the message is assigned into the memberI.D. or the member property of the message. Then the message body, thetitle, and other fields typical of an email message are assigned to themessage object. As shown in FIG. 4, if the user selected that themessage is ripple-able, then in step 5 above, an association is madebetween the message and a selected group to which to ripple the message,i.e., a groupmsg object, by adding a row to the group message table. Instep 6, for each group to be associated with a message, i.e., a groupfor which the message is to be rippled (sent), the current group I.D. issaved. Then the groupmsg associations are created for each ripple-ablegroup beginning with the source group of the message. Then the messageand each groupmsg association are saved in the database server 39(database). Note that there is only one copy of the message (document)stored in the database.

FIG. 5 depicts a user screen 60 for a user that is receiving a message.Each message 62 is displayed in its own area of the screen 64. An arrayof buttons 66 allow the receiver to enter a reply 68, edit the message70, delete the message 72, categorize the message 74 into a user definedcategory name like ‘recipes’ or ‘jokes’, save the message to the user'slocal journal 76, or ripple the message 78. The upper right corner ofthe screen 64 is a “post a message” button 80 for sending a new message.

Referring now to FIG. 6, second screen 82 continues the user screen 60.In the second screen 82, the user is presented with check boxes 84listing all Groups to which the user belongs. A check in one or more ofthe boxes 84 determines the groups to which a received message will besent (rippled). An input box 86 allows the user to enter other emailaddresses to which to send the rippled message for receivers notbelonging to one of the groups listed in the check boxes 84. Anothercheck box 88 invites the users associated with the email addresseslisted in the box 86 to join the current user's group. The radio buttons90 allow other users to ripple the received message. Finally buttons 92allow the user to save or cancel the current set of choices, whichitself may result in a ripple of the just received message.

The following is the algorithm executed by the web-servers 40 for“rippling a message to other groups.” This is the algorithm that isexecuted when the user has clicked the ripple button on a web page thatlists messages received in a group in either FIG. 4 or FIG. 6. In thealgorithm described below, it is assumed that the user is a member ofthree other groups (Group A, Group B, Group C):

-   -   1. Create object of type Message as msg.    -   2. Load msg with values from message table in database by        calling Session.Load(typeof(Message),msgId). Where msgId is the        value provided on the current displayed message.    -   3. Test if the msg.IsRipple-able value is true otherwise abort        the processing and return an error message ‘message may not be        rippled.’    -   4. Load grp with values from group table in database by calling        Group.FindByGroupName( ) method using current group name from        Web Page.    -   5. Gather a collection of Group objects from the database by        calling Member.GetAllGroupList( ) for the current authenticated        Member/User.    -   6. Present the message details and available group list to the        user on a web page (see FIG. 6).    -   7. If the use clicks the Ripple button on this page continue.        Otherwise return to web page showing messages in the group (FIG.        5).    -   8. If the user selected one or more groups to ‘ripple’ the        message to on the web page begin the process from step 9        otherwise return to message list (see FIG. 5).    -   9. Create a collection of objects of type Group and load each        one by calling Group.Load(grpId) where grpid is the value        provided from the page Check box form control.    -   10. For each group object create an object of type GroupMessage        as groupmsg. In this loop assign the current group item to an        object called curGroup.    -   11. Assign msg (from step 1) to the Message property of        groupmsg.    -   12. Assign curGroup Group property to the Group property of the        groupmsg object.    -   13. Assign the value RIPPLED to the Reflypeld property of        curGroup.    -   14. Assign the Web Page current Group Id value to the SrcGroupId        of the groupmsg object.    -   15. Associate the groupmsg object with the current Message by        calling msg.AddGroupMessage(groupmsg)    -   16. Repeat until all selected groups are processed.    -   17. Save the msg object to database by calling Session.Save(msg)        which also saves all groupmsg association objects.

In summary, to ripple a new message, a blank message object is created.As shown in FIG. 4, if the user selected that the message isripple-able, then in steps 4 and 5 above, the available groups for thatuser are displayed. If the user clicks the ripple button, then anassociation is made between the message and a selected group to which toripple the message, i.e., a groupmsg object, by adding a row to thegroup message table. For each group to be associated with a message,i.e., a group for which the message is to be rippled, the current groupI.D. is saved. Then the groupmsg associations are created for eachripplable group beginning with the source group of the message. Then themessage and each groupmsg association is saved in the database server 39(database). Note that there is only one copy of the message stored inthe database.

The groups that received the rippled content will see the new entry intheir group. The new entry is directly connected to the original entryso that if the author edits or deletes the entry, all the rippledentries will see the edits. “Seeing” a new entry, edited entry, ordeleted entry in a group is effected when a user refreshes his webbrowser screen or logs into a group session. The following is thealgorithm executed by the web-servers 40 for ‘Seeing’ or ‘DisplayingMessages in a Group’, which include messages belonging to or rippled toa group as well as ‘seeing’ responses to previously posted messages. Itis assumed that a user has selected a particular group name from a listof groups that he belongs too. The user is presented with a list ofmessages in the group according to the rules of this algorithm. Messagesare selected according to the following criteria: (See Tables 1-5).<CurrentGroupId> below refers to the primary key value of the Grouptable corresponding to the group the user selected in the web site'sgroup list page. 1.1.1 Tables: 1.1.2  Message table 1.1.3  GroupMessagetable 1.1.4 1.1.5 Where: 1.1.6  GroupMessage.GroupId value equals<CurrentGroupId> 1.1.7  Message.MessageId value equalsGroupMessage.MessageId

Then for each message that meets the above criteria, the following isexecuted: 1. If the Message.IsRipple-able value is true display theRipple button on the message list page for that message item. 2. IfMessage.MemberId value is equal to the current authenticated user'smember id show the Edit button and also show the Delete button on themessage list page for that message item. 3. Retrieve replies to messagesin the list by calling the Message.ReplyMessageList in order to displaymost recent reply text and count of total replies.

When a user has logged in or presses the refresh button, a message issent to the database to retrieve all messages for a that user in hisgroup. In the database server 39, for each message in the message table,if the group message group I.D. value equals current group I.D. andmessage I.D. value equals group message, then that message is retrievedand displayed to the user. For each message matching the above criteria,the ripple-able property is checked. If ripple-able is set to true, thenthe ripple-able button will be displayed for that message. If themessage member I.D. is equal to the user's member ID, then the user ispresented with the options of editing or deleting the message to bedisplayed along with the message itself. Any replies to that message arealso retrieved and displayed to the user. A list of any replies to thatmessage is retrieved and displayed to the user.

The following is the algorithm executed by the web-servers 40 for“Modifying IsRipple-able Property on an Existing Message.” For thealgorithm described below, it is assumed that the user has clicked theedit button on a web page listing messages in his group (See FIG. 5).Note that the Edit button is not visible to a user who is not theoriginal creator of the message object. 1. Load a object of type Messageas msg by calling Session.Load(currentMessageId) using the messageIdfrom the message list. 2. Confirm that the MemberId of msg is equal tothe current user's MemberId. Abort the page loading and return to themessage list if the values are not equal. 3. Display the values of themessage object in the Edit message web page user interface. 4. Allow theuser to update any values on the web page. If the user Clicks theSave/Submit button then save object values to the database by callingSession.Save(msg).

In summary, a message object corresponding to the message to be editedis loaded into the user's web page from the database, assuming thecurrent user is the creator of that message. The user then changes themessage. The message is then saved back to the same row in the database.Saving the message means that there is only one copy of the message inthe database. Note that if the user changes the value of theIsRipple-able property, there is no immediate effect on the message orits related data elements in the database. The only effect of a changeto IsRipple-able=TRUE is that the message list of any web page of anygroup containing the message would now include a Ripple button next tothe message item. Setting the value of IsRipple-able to FALSE woulddisplay the message without a Ripple button. The presence of a Ripplebutton on a user screen (and subsequent data validation) is the only waya user can initiate a Ripple operation. Note that a change of the valueof IsRipple-able for a message does not modify the GroupMessageassociations that already exist in the database.

FIG. 7 depicts a user screen 94 for a user that is deleting a message.The user is presented with a list of message details 96, including thegroup name, the number of groups the current message appears in, and acount of the number of replies to the current message. The user is thenpresented with a check button 98 for deleting the message from thecurrent croup, and a check button for 100 for deleting the message fromall groups. The user this then prompted with a delete the message button102 or cancel the deletion button 104.

The following is the algorithm executed by the web-servers 40 for“Deleting a Messages in a Group.” (See FIG. 8) For the algorithm listedbelow, it is assumed that the user has selected a particular messagefrom the message list in a group. 1. Call Message.Load( ) using thecurrent messageId from the web page to retrieve message values from thedatabase. 2. If the current user's memberId value is equal to theMemberId on the message object then display both the option to deletethe message completely from all groups and the option to delete themessage from this group only. 3. If the current user's memberId is equalto the MemberId on the GroupMessage object returned by theMessage.GetGroupMessageByGroupId(currentGroupId) display the option todelete the message from this group only. 4. Begin a databasetransaction. 5. If the user chooses to delete the message from allGroups, call the Session.Delete(Message) to remove all instances ofGroupMessage items then delete the message object itself. 6. If the userselected “delete the message from this group only” then callMessage.GetGroupMessageByGroupId(currentGroupId) to a GroupMessageObject called grpMsg to get the association object for the currentgroup. Call Message.GroupMessageList.Remove(grpMsg). CallSession.Save(message) to save the changes to the database.

In summary, if the user memberID matches the messages memberID, thenthat user is the owner of the document. In such circumstances, the userhas the option to both delete the message from the current group or fromall groups. If the users memberID matches only the current groupsmemberID (i.e., the user is not the owner of the message), then thatuser can delete the message only from the current group. If the user isthe owner, then both all group message associations and the message rowitself is deleted in the database. If the user is not the owner, thenonly the current group message association is deleted in the database.

The following are algorithms for generating useful analytical data(analytics) provided by the present invention.

Ripple Trajectory

Ripple Trajectory is a 1^(st) order ripple metric that is a measure ofthe sequence by which a user initiated the ripple mechanism on a message(document) in one group to another group (or set of groups). Each rippleevent captures the user, date, time, group from, and current groupassociated with a given document. To evaluate the Ripple Trajectory, thesystem queries the database as follows: 1.1.8 Tables: 1.1.9  Messagetable 1.1.10  GroupMessage table 1.1.11 1.1.12 Where: for a givenMessageId 1.1.13  GroupMessage.GroupId  value  equals  Group.GroupId“CurrentGroup” 1.1.14  GroupMessage.SrcGroupId  value  equals Group.GroupId “SourceGroup” 1.1.15  Message.MessageId value equalsGroupMessage.MessageId 1.1.16  Member.MemberId value equalsGroupMessage.MemberId 1.1.17 1.1.18 Return as list of values: 1.1.19 CurrentGroup.Groupname,    SourceGroup.GroupName, Member.Name,GroupMessage.CreationDt, Member.MemberId 1.1.20 1.1.21 Order the resultsby: 1.1.22  GroupMessage.CreationDt 1.1.23

For example, the results could trace a path for a particular documentwhich would appear at a user terminal as follows:

-   -   Document created in Group A by user X at 3 pm    -   rippled by User Y from Group A to Group B at 3:05 pm    -   rippled by User Z to Group M and Group N at 9 am next day        Ripple Audience Volume

Ripple Audience Volume is a 1^(st) order ripple metric that is a measureof the number of potential viewers/readers of a message (document) as itis rippled between groups. To evaluate the Ripple Audience Volume, thesystem queries the database as follows: 1.1.24 Step 1: Assemble asequence of groups and creationdt times that the message appeared in:1.1.25 Tables: 1.1.26   Message table 1.1.27   GroupMessage table 1.1.281.1.29 Where: for a given MessageId 1.1.30   GroupMessage.GroupId valueequals Group.GroupId “CurrentGroup” 1.1.31   Message.MessageId valueequals GroupMessage.MessageId 1.1.32 1.1.33 Return as list of values:1.1.34   CurrentGroup.Groupname, GroupMessage.CreationDt 1.1.35 1.1.36Order the results by: 1.1.37   GroupMessage.CreationDt 1.1.38 Step 2:1.1.39 Calculate the total number of users/members of each group in thesequence. 1.1.40 1.1.41 For each rows in the results returned in Step 1:1.1.42   count the number of GroupMember rows 1.1.43 WhereGroupMember.GroupId = <Results>.GroupId 1.1.44 1.1.45 Return a list of:1.1.46   CreationDt, GroupName, Count of Members of Group

The results of the above query can show a Ripple Audience for aparticular document on the screen of a terminal. Assuming that Group Ahas 30 users, Group B has 45 users, Group M has 25 users and Group N has100 users, the terminal screen would show:

-   -   Group A at 3 pm, message can be viewed by 30 users    -   Group B at 3:05 pm, message can be viewed by an additional 45        users    -   Group M, Group N at 9 am next day, message can be viewed by an        additional (25+100) 125 users.        Changes in Ripple Metric Factors over a Period of Time

For each of the 1^(st) order ripple metrics, there are 2^(nd) orderanalytics that measure the change in Ripple Velocity or Ripple AudienceVolume over time. By measuring how quickly or how far a message isrippled (using Ripple Trajectory), the present invention provides acritical measurement of the urgency of the document which is a proxy for“word of mouth”. Alternatively, measuring the change in audience volumeis a proxy for the popularity of the document contents.

Cross Reference User Profile Information Against Ripple Metrics

Each user of the system also provides a selection of typical demographicinformation (city, zip code) as well as optionally provided informationon age, family composition, interests, hobbies etc. Furthermore, eachuser may join groups that are themselves interest, topic or affinitybased (e.g., Gardening Group, New Mothers Group). By combiningdemographic factors and/or affinity factors with the Ripple Trajectorymetric, the present invention provides a unique insight into themotivations behind the user's decision to ripple. To evaluate the UserProfile Data against Ripple Trajectory the system queries the data asfollows: 1.1.47 Tables: 1.1.48   Member table where Member.MemberId =results.Member.MemberId 1.1.49   Results of Ripple Trajectory: 1.1.50    CurrentGroup.Groupname, SourceGroup.GroupName, Member.Name 1.1.51    Member.MemberId, GroupMessage.CreationDt 1.1.52 1.1.53 For each rowof the results above: 1.1.54   Select MemberDemographic elements for the‘rippler’ memberid. 1.1.55 1.1.56 Calculate count of demographicelements for all rows of results.

For example, the results of this algorithm can show at a user terminalthe following:

Document created in Group A by user X at 3 pm—User X lives in Madison,Wis. age 35 with 1 child.

rippled by User Y from Group A to Group B at 3:05 pm—User Y lives inMadison, Wis. age 30 with 2 children.

rippled by User Z to Group M and Group N at 9 am next day—User Z livesin Madison Wis. age 35 with 3 children.

The system would summarize the results as:

For Document XXX—for 3 ripplers:

-   -   Madison Wis. (3),    -   Age 30 (1), Age 35 (2)    -   Children (1), Children (2), Children (3)        An analyst may conclude that the document was of particular        interest to residents of Madison Wis. between ages 30-35 and who        had children.        Cross Reference Group Member Profile Information Against Ripple        Metrics

By combining demographic factors and/or affinity factors with the RippleTrajectory metric, an analyst is provided with a unique insight into thepopularity of a particular document. For example, to evaluate the GroupProfile Data against Ripple Trajectory, the system queries the databaseas follows: 1.1.57 Tables: 1.1.58   GroupMember whereGroupMember.MemberId = results.Member.MemberId 1.1.59   Member tablewhere GroupMember.MemberId = Member.MemberId 1.1.60   Results of RippleTrajectory: 1.1.61     CurrentGroup.Groupname, SourceGroup.GroupName,Member.Name 1.1.62     Member.MemberId, GroupMessage.CreationDt 1.1.631.1.64 For each row of the results above: 1.1.65   SelectMemberDemographic elements for the Group Member 1.1.66 1.1.67 Calculatecount of demographic elements for all rows of resultsFor example, the results of this algorithm can show at a terminal screenthe following:

-   -   Group A at 3 pm, message can be viewed by 30 users—20 Users are        residents of Madison Wis., 10 Users are residents of Boise Id.,        15 users have 2 children, 15 users have 1 child. Age 30 (10) Age        35 (20)    -   Group B message can be viewed by an additional 45 users, Users,        30 Users are residents of Madison Wis., 15 Users are residents        of Brooklyn N.Y., Age 25 (25) Age 30 (5), Age 35 (15), 40 have 2        children, 5 have no children.    -   Group M (25 users)—10 users are residents of Brooklyn, 15 are        residents of Madison Wis. 25 Users have 2 children. Age 35 (25)    -   Group N 100 users—50 users have 2 children 50 user have 3        children. All live in Madison Wis. Age 30 (50) Age 35 (50).        The system would summarize the results as:        For Document XXX—for total of 200 audience members:

Madison Wis.(165)

Age 25 (25), Age 30 (65), Age 35 (115)

No children (5), 1 Child (15), 2 Children (130), 3 Children (50)

An analyst may conclude that the document was of particular interest toresidents of Madison Wis. between ages 30-35 and who had children.

It is to be understood that the exemplary embodiments are merelyillustrative of the invention and that many variations of theabove-described embodiments may be devised by one skilled in the artwithout departing from the scope of the invention. It is thereforeintended that all such variations be included within the scope of thefollowing claims and their equivalents.

1. A method for sharing documents between groups over a distributednetwork, comprising the steps of: receiving a first message from amember of a first group comprising a document, said first message alsocomprising an indication of whether the document is send-able to othergroups to which the first member belongs; sending a list of groups tothe member of the first group to which the member belongs if theindication indicates that the document is send-able to other groups;receiving a message which indicates that the document is to be sent to asecond group; and associating the document with the second group.
 2. Themethod for sharing documents of claim 1, further comprising the step ofstoring an association of the document with the second group in adatabase.
 3. The method for sharing documents of claim 1, furthercomprising the step of storing an association of the second group withthe document in the database.
 4. The method for sharing documents ofclaim 2, further comprising the step of storing the document in adatabase.
 5. The method for sharing documents of claim 4, wherein saidstep of sending a list of groups to the member of the first groupfurther comprises the step of sending properties of the document to themember of the first group.
 6. The method for sharing documents of claim2, wherein the document is one of a text message, file, and formattedattachment.
 7. The method for sharing documents of claim 2, wherein thedocument is one of an email-like message, calendar event, tradingmessage items, digital photograph, digital video, and digital audio. 8.The method for sharing documents of claim 4, further comprising thesteps of: receiving a message from a member of the second group whichindicates that all documents associated with the second group are to beretrieved; retrieving a list of documents associated with the secondgroup; and sending a copy of the document to the member of the secondgroup.
 9. The method for sharing documents of claim 8, further includingthe step of retrieving information associated with the document from thedatabase, said information indicating that the document is send-able toother groups, wherein said step of sending a copy of the document to themember of the second group further includes the step of sending anindication to display that the document is send-able.
 10. The method forsharing documents of claim 9, wherein the message received indicatesthat the member of the second group is the owner of the document, andwherein said step of sending a copy of the document further comprisesthe step of sending an indication to display that the document iseditable and the step of sending an indication to display that thedocument is delete-able.
 11. The method for sharing messages of claim 4,further comprising the steps of: receiving a reply from the member ofthe second group; associating the reply with the first group; storingthe reply in the database; receiving a message from the member of thefirst group which indicates that all documents and replies for the firstgroup are to be retrieved; and sending the reply to the member of thefirst group.
 12. The method for sharing messages of claim 4, furthercomprising the steps of: receiving a message from the member of thefirst group which contains an indication that the document is send-able;saving the indication in the database; sending an indication to themember of the first group to display that the document is send-able. 13.The method for sharing messages of claim 12, further comprising thesteps of: receiving message from the member of the first group whichcontains an indication that the document is not send-able; saving theindication in the database; sending an indication to the member of thefirst group to remove an indication that the document is not send-able.14. The method for sharing messages of claim 13, further comprising thesteps of: receiving a message from the member of the second group whichindicates that all documents associated with the second group are to beretrieved; retrieving a list of messages associated with the secondgroup, the list excluding the document; and sending the messagesassociated with the second group to the member of the second group. 15.The method for sharing messages of claim 4, further comprising the stepsof: receiving a message from the member of the first group whichindicates that the document is to be deleted; confirming that member ofthe first group is the owner of the document; deleting the associationof the document with the second group in the database; and deleting thedocument from the database.
 16. The method for sharing messages of claim15, further comprising the steps of: receiving a second message from themember of the second group which indicates that all documents associatedwith the second group are to be retrieved; retrieving a list of messagesassociated with the second group, the list excluding the document; andsending the list of messages associated with the second group to themember of the second group.
 17. The method for sharing messages of claim4, further comprising the steps of: receiving a message from the memberof the second group which indicates that the document is to be deleted;confirming that member of the second group is not the owner of thedocument; and deleting the association of the document to the secondgroup in the database.
 18. The method for sharing messages of claim 17,further comprising the steps of: receiving a second message from themember of the second group which indicates that all documents associatedwith the second group are to be retrieved; retrieving a list of messagesassociated with the second group, the list excluding the document; andsending the list of messages associated with the second group to themember of the second group.
 19. The method for sharing messages of claim4, further comprising the steps of: receiving a message from the memberof the first group which includes a request to retrieve documents from apublic group; and sending a document from the public group to the memberof the first group.
 20. The method for sharing messages of claim 1,wherein the second group is a private group.
 21. An apparatus forsharing documents between groups over a distributed network, comprisingof: a web-server: for receiving a first message from a member of a firstgroup containing a document, said first message also containing anindication of whether the document is send-able to other groups; forsending a list of groups to the member of the first group to which thefirst member belongs if the indication indicates that the document issend-able to other groups; for receiving a message which indicates thatthe document is to be sent to a second group; and for associating thedocument with the second group; and a database server: for storing anassociation of the document with the second group; for storing anassociation of the second group with the document in the database; andfor storing the document in a database.
 22. The apparatus for sharingdocuments of claim 21, wherein the distributed network is the Internetand further comprising: an IP router for routing messages between theInternet and the web-server; a firewall for protecting said web-serverfrom unwanted messages; and a notification server for querying thedatabase server on a periodic basis to generate messages to send tousers in order to report new activity or changes on the web siteassociated with the web-servers.
 23. The apparatus for sharing documentsof claim 22, wherein said notification server queries the database for alist of new group invitations and sends email messages to each emailaddress in the list.
 24. A method for sharing documents between groupsover a distributed network, comprising the steps of: receiving a messagefrom a member of a first group which indicates that all messagesassociated with the first group are to be retrieved; sending at leastone document associated with the first group to the member of the firstgroup; sending an indication to the member of the first group that theat least one document is send-able to at least a second group to whichthe member belongs; sending a list comprising the second group to themember of the first group; receiving a message which indicates that thedocument is to be sent to the second group; and sending a copy of thedocument to the second group.
 25. The method for sharing messages ofclaim 24, wherein the list comprising the second group is a plurality ofgroups.
 26. The method for sharing messages of claim 25, furthercomprising the step of sending the message to the plurality of groups.27. The method for sharing messages of claim 24, further comprising thesteps of: receiving a message from a member of the second group whichindicates that all messages associated with the second group are to beretrieved; sending the least one document to the member of the of secondgroup; sending an indication to the member of the second group that theat least one document is send-able to a list comprising a third group towhich the member of second group belongs, said member of the first groupnot being a member of the third group; sending a list containing thethird group to the member of the of the second group; receiving amessage which indicates that the at least one document is to be sent tothe third group; and sending a copy of the document to the third group.28. The method for sharing documents of claim 24, further comprisingreceiving a message that indicates that the member of the second groupis the owner of the document, and wherein said step of sending a copy ofthe document further comprises the step of sending an indication todisplay that the document is editable and the step of sending anindication to display that the document is delete-able.
 29. The methodfor sharing messages of claim 24, further comprising the steps of:receiving a reply from the member of the second group; receiving amessage from the member of the first group which indicates that alldocuments and replies for the first group are to be retrieved; andsending the reply to the member of the first group.
 30. The method forsharing messages of claim 24, further comprising the steps of: receivinga message from the member of the first group which contains anindication that the document is send-able; sending an indication to themember of the first group to display that the document is send-able. 31.The method for sharing messages of claim 30, further comprising thesteps of: receiving message from the member of the first group whichcontains an indication that a second document is not send-able to asecond group; sending an indication to the member of the first group toremove an indication that the second document is not send-able to thesecond group; receiving a message from a member of the second groupcontaining an indication to retrieve all documents associated with thesecond group; and sending a list of documents associated with the secondgroup, the list excluding the second document to the member of thesecond group.
 32. The method for sharing messages of claim 24, furthercomprising the steps of: receiving a message from the member of thefirst group which indicates that the document is to be deleted;confirming that member of the first group is the owner of the document;receiving a second message from the member of the second group whichindicates that all documents associated with the second group are to beretrieved; retrieving a list of messages associated with the secondgroup, the list excluding the document; and sending the list of messagesassociated with the second group to the member of the second group. 33.The method for sharing messages of claim 28, further comprising thesteps of: receiving an edited version of the first document from themember of the second group; receiving a message which indicates that thefirst document is to be sent to a member of the first group; and sendinga copy of the edited version of the first document to the member of thefirst group.
 34. The method for sharing messages of claim 24, furthercomprising the steps of: receiving a message from a web page linkindicating the member of the first group is invited to join a thirdgroup; recording in the database that the member of the first group is amember of the third group; receiving a message of the member of thefirst group to retrieve all messages associated with the third group;and sending at least one message associated with the third group to themember of the first group.
 35. The method for sharing documents of claim24, further comprising the steps of: receiving a message from the memberof the first group to retrieve a Ripple Trajectory of the first message;sending the Ripple Trajectory of the first message to the member of thefirst group.
 36. The method for sharing documents of claim 24, furthercomprising the steps of: receiving a message from the member of thefirst group to retrieve a Ripple Audience Volume of the first message;sending the Ripple Audience Volume of the first message to the member ofthe first group.